const { getOneBlog } = require("./blogDao");
const { Op } = require("sequelize");
const BlogModel = require("./models/BlogModel");
const MessageModel = require("./models/MessageModel");

// 添加评论或者留言
module.exports.addMessage = async function (info) {
    const data = await MessageModel.create(info);
    return data ? data.toJSON() : data;
}

//获取评论或留言
module.exports.getMessage = async function (query) {
    query.keyword = query.keyword ? query.keyword : "";
    // 判断是为评论还是留言
    if (query.blogid) {
        // 是查询全部还是单个blogid
        if (query.blogid == -1) {
            const data = await MessageModel.findAndCountAll({
                limit: +query.limit,//查看多少条数据
                offset: (+query.page - 1) * (+query.limit),//跳过多少条数据
                where: {//条件判断
                    [Op.and]: {
                        content: {
                            [Op.substring]: `${query.keyword}`
                        },
                        blogId: {
                            [Op.ne]: null
                        }
                    },

                },
                // 与什么进行连查，前提为其有进行外键相连
                include: [
                    {
                        model: BlogModel,
                        as: "blog",
                    }
                ],
                // 排序
                order: [
                    ["createDate", "DESC"]
                ]
            })
            // 返回其JSON格式处理扁平化
            return JSON.parse(JSON.stringify(data));
        } else {
            const data = await MessageModel.findAndCountAll({
                limit: +query.limit,//转为其数字类型
                offset: (+query.page - 1) * +query.limit,
                // 判断
                where: {
                    [Op.and]: {
                        content: {
                            [Op.substring]: `${query.keyword}`
                        },
                        blogId: +query.blogid//判断
                    }
                },
                // 与什么进行连查，前提为其有进行外键相连
                include: [
                    {
                        model: BlogModel,
                        as: "blog",
                    }
                ],
                // 排序
                order: [
                    ["createDate", "DESC"]
                ]
            })
            // 返回其JSON格式处理扁平化
            return JSON.parse(JSON.stringify(data));
        }
    } else {
        const data = await MessageModel.findAndCountAll({
            limit: +query.limit,
            offset: (+query.page - 1) * +query.limit,
            where: {
                [Op.and]: {
                    content: {
                        [Op.substring]: `${query.keyword}`
                    },
                    blogId: null//其blogId为null则是其留言板
                }
            },
            order: [
                ["createDate", "DESC"]
            ]
        })
        // 转为其JSON格式的内容
        return JSON.parse(JSON.stringify(data));
    }
}

// 删除留言或评论
module.exports.deleteMessage = async function (id) {
    return await MessageModel.destroy({
        where: {
            id
        }
    });
}

//通过文章id查询所有的的评论内容
module.exports.getBlogIdMessage = async function (blogId) {
    const data = await MessageModel.findAll({
        where: {
            blogId
        }
    })
    return JSON.parse(JSON.stringify(data))
}